import java.util.Random;


public class Bot extends Player {
	
	/*
	 * 0 - rezygnacja
	 * 1 - wyrownanie
	 * 2 - podbicie
	 * 3 - check
	 * 4 - allin
	 * 5 - pierwsza stawka
	 */
	public int BotBetStrategy(Table stol){
		Random los = new Random();
		int ilePodbic=0;
		int CzyAkcja=0;
		//int AktualnyStan=0;
		if(stol.check)
		{
			CzyAkcja = 100/uklad;
			if(CzyAkcja >= 20)
			{
				stol.wezZetony(this, (20*Zetony())/100, 0);
				return 5;
			}
			else
			{
				CzyAkcja = los.nextInt(2);
				if(CzyAkcja == 1)
					stol.wezZetony(this, (10*Zetony())/100, 0);
				else
					return 3;
				return 5;
			}
		}
		if(stol.ALLin)
		{
			CzyAkcja = 100/uklad;
			if(CzyAkcja >= 20)
			{
				stol.wezZetony(this, 0, 3);
				return 4;
			}
			else
			{
				CzyAkcja = los.nextInt(2);
				if(CzyAkcja == 1)
					stol.wezZetony(this, 0, 3);
				else
					return 0;
				return 4;
			}
		}
		// Poker i kareta 
		else if(uklad<=2){
			 CzyAkcja = 1+los.nextInt(2);
			 
			if(CzyAkcja==2){
				stol.wezZetony(this, 0, 3); //Allin
				return 4;
			}
			else if(CzyAkcja==1){
				//AktualnyStan = Zetony();
				int ile=1+(int)0.7*Zetony();
				if(!stol.wezZetony(this, ile, 2)) //Podbicie
				{	
					stol.wezZetony(this, 0, 1);
					return 1;
				}
				return 2;
			}
		}
		//kolor i full
		else if(uklad<=5 && uklad>=3){
			CzyAkcja = 1+los.nextInt(2);
			 
			if(CzyAkcja==1){
				//if(stol.check) return 3;
				stol.wezZetony(this, 0, 1); //Wyrownanie
				return 1;
			}
			else if(CzyAkcja==2){
				//AktualnyStan = Zetony();
				ilePodbic = 1+(40+los.nextInt(60));
				int ile=1+(int)ilePodbic*Zetony()/100;
				if(!stol.wezZetony(this, ile, 2)) // Podbicie
				{	
					stol.wezZetony(this, 0, 1);
					return 1;
				}
				return 2;
			}
		}
		//para
		else if(uklad==8){
			 CzyAkcja = 1+los.nextInt(7);
			 if(CzyAkcja<=4){
				 //if(stol.check) return 3;
				 stol.wezZetony(this, 0, 1); //Wyrownanie 
				 return 1;
			 }
			 else if(CzyAkcja>4){
				//AktualnyStan = Zetony();
				ilePodbic = 1+(10+los.nextInt(20));
				int ile=1+(int)ilePodbic*Zetony()/100;
				if(!stol.wezZetony(this, ile, 2)) // Podbicie
				{	
					stol.wezZetony(this, 0, 1);
					return 1;
				}
				return 2;
			}
		}
		//2pary
		else if(uklad==7){
			CzyAkcja = 1+los.nextInt(7);
			 if(CzyAkcja<4){
				 //if(stol.check) return 3;
				 stol.wezZetony(this, 0, 1); //Wyrownanie 
				 return 1;
			 }
			 else if(CzyAkcja>=4){
				//AktualnyStan = Zetony();
				ilePodbic = 1+(20+los.nextInt(30));
				int ile=1+(int)ilePodbic*Zetony()/100;
				if(!stol.wezZetony(this, ile, 2)) // Podbicie
				{	
					stol.wezZetony(this, 0, 1);
					return 1;
				}
				return 2;
			}
		}
		//trojka
		else if(uklad==6){
			CzyAkcja = 1+los.nextInt(5);
			 if(CzyAkcja<3){
				 //if(stol.check) return 3;
				 stol.wezZetony(this, 0, 1); //Wyrownanie 
				 return 1;
			 }
			 else if(CzyAkcja>=3){
				//AktualnyStan = Zetony();
				ilePodbic = 1+(20+los.nextInt(50));
				int ile=1+(int)ilePodbic*Zetony()/100;
				if(!stol.wezZetony(this, ile, 2)) // Podbicie
				{	
					stol.wezZetony(this, 0, 1);
					return 1;
				}
				return 2;
			}
		}
		//najwyzsza
		else if(uklad==9){
			//if(stol.check) return 3;
			 stol.wezZetony(this, 0, 1); //Wyrownanie 
			 return 1;
			
		}
		return 0;
	}
	
	
	public boolean BotGameStrategy(Table stol) {  
		Random los = new Random();
		int wymianakart, r1=0;
		
		
		
		
		/*_____* Dla ukladow zajmujacych cala "reke" *______*/
		
		if(uklad<=4){  
			//return false;
		}
		/*________* Dla pary w ukladzie*___________ */
		else if(uklad==8){
			
			for(int i=0; i<4; i++){
				if(reka[i].getNumFig() == reka[i+1].getNumFig())
				{
					r1=i;
					break;
				}
			}
			wymianakart = 1+los.nextInt(3);
			for (int i=0, y=0; i < 5 && y <= wymianakart; i++){
				if (i != r1 && i != r1+1)
				{
					stol.zamienKarte(this, i);
					y++;
				}
			}
			return true;
		//wymianakart=0;	
			
		}
		/*_________* Dla 2 Par w ukladzie *__________*/
		else if(uklad==7){
			
			
			if(reka[3].getNumFig() != reka[4].getNumFig()){
				stol.zamienKarte(this, 4);
			}
			else if(reka[1].getNumFig() != reka[2].getNumFig() && reka[3].getNumFig() != reka[2].getNumFig()){
				stol.zamienKarte(this, 2);
			}
			else if(reka[0].getNumFig() != reka[1].getNumFig()){
				stol.zamienKarte(this, 0);
			}
			return true;
			
		}
		/*_________* Dla Trojki w ukladzie *__________*/
		else if(uklad==6){
			
			if(reka[2].getNumFig() != reka[3].getNumFig()){
					stol.zamienKarte(this, 3);
					if(reka[2].getNumFig() != reka[4].getNumFig()){
						stol.zamienKarte(this, 4);	
					}
				}
			else if(reka[2].getNumFig() != reka[0].getNumFig()){
				if(reka[2].getNumFig() != reka[1].getNumFig()){
					stol.zamienKarte(this, 0);
					stol.zamienKarte(this, 1);	
				}
			}
			else if(reka[2].getNumFig() != reka[4].getNumFig()){
				stol.zamienKarte(this, 4);
				if(reka[2].getNumFig() != reka[0].getNumFig()){
					stol.zamienKarte(this, 0);	
				}
			}
			return true;
		}
		/*________* Dla Najwyzszej karty w ukladzie *________*/
		else if(uklad==9){
			
			wymianakart = 1+los.nextInt(4);
				
			for(int i=0; i < wymianakart; i++){
				stol.zamienKarte(this, i);
			} 
			return true;
		}
		
		return false;
	}


	
}
